#ifndef SOLVER1D_H
#define SOLVER1D_H

#include "Solver.h"

// --------------------------------------------------------------------------------------------------------------------
//Class Solver1D
// --------------------------------------------------------------------------------------------------------------------
class Solver1D : public Solver
{

public:
    //Creator for Solver
    Solver1D(PicParams* params_, ParallelMPI* pmpi_, Grid* grid_, PhysicalField* fields_, Diagnostic* diag_) :
        Solver(params_, pmpi_, grid_, fields_, diag_)
    {
        nx_p = params->dims_space[0]+1+2*params->oversize[0];

        dt_ov_dx = params->dt / params->cell_length[0];

        bc_em_type_x  = params->bc_em_type_x;
        bc_em_value_x = params->bc_em_value_x;
    };
    virtual ~Solver1D() {};

    virtual void operator()(PhysicalField* fields)=0;
    virtual void operator()(ParallelMPI* pmpi, PhysicalField* fields, Diagnostic* diag)=0;

protected:
    int nx_p;
    double dt_ov_dx;
    std::vector<std::string> bc_em_type_x;
    std::vector<double> bc_em_value_x;

};//END class

#endif

